package com.bsj.power.pls.service;

import com.bsj.power.common.config.global.JsonResult;
import com.bsj.power.common.def.dto.group.GroupDTO;
import com.bsj.power.common.def.vo.pls.GroupTreeVO;
import com.bsj.power.common.def.vo.pls.GroupVO;

import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;

/**
 * @author LiJiaXin
 * @version 1.0.0
 * @description GroupService
 * @time 2024/4/25 19:23
 */
public interface GroupService {

    /**
     * 添加组织
     *
     * @param groupDTO
     * @return com.bsj.power.common.config.global.JsonResult
     * @author ljx
     * @time 2024/4/25 19:43
     */
    JsonResult addGroup(GroupDTO groupDTO);

    /**
     * 删除组织
     *
     * @param groupId
     * @return com.bsj.power.common.config.global.JsonResult
     * @author ljx
     * @time 2024/4/25 19:43
     */
    JsonResult deleteGroup(Integer groupId);

    /**
     * 修改组织
     *
     * @param groupDTO
     * @return com.bsj.power.common.config.global.JsonResult
     * @author ljx
     * @time 2024/4/25 19:43
     */
    JsonResult updateGroup(GroupDTO groupDTO);

    /**
     * 获取单个组织
     *
     * @param groupId
     * @return com.bsj.power.common.def.vo.pls.GroupVO
     * @author ljx
     * @time 2024/4/25 19:43
     */
    GroupVO getGroupById(Integer groupId);

    /**
     * 获取组织树
     *
     * @return java.util.List<com.bsj.power.common.def.vo.pls.GroupTreeVO>
     * @author ljx
     * @time 2024/4/25 19:44
     */
    List<GroupTreeVO> getGroupTree();

    /**
     * 获取指定组织的所有下级或上级组织id（包括本身）
     *
     * @param groupId
     * @param type    1:上级 2:下级
     * @return java.util.List<java.lang.Integer>
     * @author ljx
     * @time 2024/7/9 11:55
     */
    List<Integer> getGroupIds(Integer groupId, Integer type);
}
